﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dotnet.Code.Ext
{
    public static partial class Ext
    {
        public static string Execute(this Process process,string command,int seconds)
        {
            string output = ""; //输出字符串
            if (command != null && !command.Equals(""))
            {
                ////Process process = new Process();//创建进程对象
                //ProcessStartInfo startInfo = new ProcessStartInfo();
                //startInfo.FileName = "cmd.exe";//设定需要执行的命令
                ////startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出
                //startInfo.UseShellExecute = false;//不使用系统外壳程序启动,不显示命令行运行窗口
                //startInfo.RedirectStandardInput = true;//不重定向输入,重定向命令行的输入流，以便我们可以通过程序输入命令以模仿手工输入
                //startInfo.RedirectStandardOutput = true; //重定向输出,输出流重定向，保证可以获取命令行执行命令后的输出结果
                //startInfo.CreateNoWindow = false;//不创建窗口,　//不显示命令行运行窗口　　
                //process.StartInfo = startInfo;

                try
                {
                    if (process.Start())//开始进程
                    {
                        process.StandardInput.WriteLine(command); //输入各种控制命令

                        //if (seconds == 0)
                        //{
                        //    process.WaitForExit();//这里无限等待进程结束
                        //}
                        //else
                        //{
                        //    process.WaitForExit(seconds); //等待进程结束，等待时间为指定的毫秒
                        //}
                        //output = process.StandardOutput.ReadToEnd();//读取进程的输出
                    }
                }
                catch(Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    //if (process != null)
                    //    process.Close();
                }
            }
            return output;
        }

        //private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
        //{
        //    Console.WriteLine(e.Data);
        //   // throw new NotImplementedException();
        //}
    }
}
